@哈哈鱼
2年前 提问
1个回答

什么是XSSI攻击

一颗小胡椒
2年前

XSSI被称为跨站脚本包含攻击,通常在开发过程中对数据的临时存储,存储在动态javascript文件中,方便全局对数据的调用。攻击者会尝试将脚本标签加载到指向不同来源的页面,但攻击者却无法访问该页面的话,那么攻击者可以诱骗经过身份验证的用户访问处于攻击者控制之下的页面,从而间接发动注入攻击,然后将结果跨域泄漏给攻击者的JavaScript代码。

防御XSSI攻击的必要条件有:

  • 如果网站返回“X-Content-Type-Options:nosniff”HTTP头部的话,那么该攻击就会偃旗息鼓了。所以,最简单的防御措施,就是让它返回这个头部。服务器可以通过nosniff头部告诉浏览器,“当我说将给你<Content-Type>时,就意味着这是真的<Content-Type>!”。

  • 脚本标签只能用于GET请求。因此,如果端点只接受POST请求,则此攻击就无能为力了。这个要求看似简单,但务必要小心。您可能已经设计了只接收POST请求的API,但您的内容管理系统也许仍然可以接收GET请求。

  • 如果端点始终返回200,那么也就无法从状态码中窃取信息了。但是,状态码的存在,不要仅仅为了阻止这种攻击而简单粗暴地废弃了HTTP协议的核心部分。请改用nosniff头部来阻止该攻击。

  • 如果攻击者能够在自己的浏览器中加载私密信息,那么他就不需要这种攻击了。该攻击主要是设法让用户访问攻击者的域,然后以用户在其他域的权限来获取更多信息,这通常要求用户已经经过了相应的认证。除此之外,如果您的家庭路由器有此漏洞,那么恶意公共站点可以通过它请求脚本,从而导致信息泄漏。